package com.example.demo.beans;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

public class ReflectionStaticFieldExample {

    // 实例字段
    public String instanceField = "Instance Field";

    // 静态字段
    private static String staticField = "Static Field";

    public static void main(String[] args) {
        // 获取当前类的 Class 对象
        Class<?> clazz = ReflectionStaticFieldExample.class;

        // 获取当前类的所有字段（包括静态字段和实例字段）
        Field[] fields = clazz.getFields();

        // 遍历并打印字段信息
        for (Field field : fields) {
            field.setAccessible(true); // 设置可访问私有字段
            System.err.println("Field Name: " + field.getName());
            System.err.println("Field Type: " + field.getType());
            System.err.println("Is Static: " + isStatic(field));
            System.err.println("-----------------------------");
        }
    }

    /**
     * 判断字段是否是静态字段
     *
     * @param field 字段对象
     * @return 如果是静态字段返回 true，否则返回 false
     */
    public static boolean isStatic(Field field) {
        return Modifier.isStatic(field.getModifiers());
    }
}